package cn.zjitc.quickstart.servlet;

import javax.servlet.*;
import java.io.IOException;

public class Demo1Servlet implements Servlet {
    /**
     * 初始化方法，Servlet 被创建时由容器调用，只执行一次。用于资源初始化
     * ServletConfig 是 Servlet 容器在初始化 Servlet 时传递的配置信息对象。它的主要作用如下：
     * 获取 web.xml 中为该 Servlet 配置的初始化参数。
     * 获取 Servlet 的名称。
     * 获取 ServletContext（全局上下文对象）。
     * 常用方法：
     * getInitParameter(String name)：获取指定名称的初始化参数。
     * getInitParameterNames()：获取所有初始化参数名。
     * getServletName()：获取 Servlet 的名称。
     * getServletContext()：获取 ServletContext 对象。
     * ServletConfig 只属于当前 Servlet 实例，每个 Servlet 都有自己的 ServletConfig
     * @param servletConfig
     * @throws ServletException
     */
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        String value = servletConfig.getInitParameter("paramName");
        ServletContext context = servletConfig.getServletContext();
        System.out.println("ServletDemo1 initialized");
    }

    /**
     * 返回 Servlet 的配置信息（ServletConfig 对象）。
     * @return
     */
    @Override
    public ServletConfig getServletConfig() {
        System.out.println("ServletDemo1 getServletConfig called");
        return null;
    }

    /**
     * 处理请求的方法，每次有请求到达时调用。核心业务逻辑在此实现。
     * @param servletRequest
     * @param servletResponse
     * @throws ServletException
     * @throws IOException
     */
    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
        System.out.println("ServletDemo1 service method called");
    }

    /**
     * 返回 Servlet 的相关信息（如作者、版本等），一般可返回空字符串。
     * @return
     */
    @Override
    public String getServletInfo() {
        System.out.println("ServletDemo1 getServletInfo called");
        return "";
    }

    /**
     * 销毁方法，Servlet 被卸载或服务器关闭时调用，只执行一次。用于资源释放。
     */
    @Override
    public void destroy() {
        System.out.println("ServletDemo1 destroyed");
    }
}
